// 散列表
// HashTable类，也叫HashMap类
// 是Dictionary的一种散列实现方式
// 散列算法的作用是
// 尽可能快地在数据结构中找到一个值
// 散列函数的作用是 给定一个键值，然后返回 值在表中的地址
// 
// 散列表和散列映射一样
// 在一些编程语言中，还有一种叫做散列集合的实现
// 散列集合由一个集合构成，
// 但是插入、移除或获取元素时，
// 使用的是散列函数。

function HashTable(){
	var table = [];

	var loseloseHashCode = function(key){
		var hash = 0;
		for(var i = 0; i < key.length; i++){
			hash += key.charCodeAt(i);
		}
		return hash % 37;
		// 为了得到较小的值，会使用hash值和一个任意的数求余。
		// 但是这里的hash值是很可能会出现重复的
		// 重复就会导致后来的覆盖之前的值
	}

	// 处理hash冲突的几种方法：
	// 1、分离链接
	// 2、线性探查
	// 3、双散列法

	this.put = function(key, value){
		var position = loseloseHashCode(key);
		console.log(position + ' -- ' + key);
		table[position] = value;
	}

	this.remove = function(key){
		table[loseloseHashCode(key)] = undefined;
	}

	this.get = function(key){
		return table[loseloseHashCode(key)]
	}
}